package server;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;

/**
 *
 */
public class StaticResourceUtil {

  public static String getAbsolutePath(String path) {
    String absolutePath = StaticResourceUtil.class.getResource("/").getPath();
    return absolutePath.replaceAll("\\\\", "/") + path;
  }


  public static void outputStaticResource(InputStream inputStream, OutputStream outputStream) throws IOException {
    int count = 0;
    while (count == 0) {
      count = inputStream.available();
    }

    int resourceSize = count;
    outputStream.write(HttpProtocolUtil.getHttpHeader200(resourceSize).getBytes(StandardCharsets.UTF_8));

    // 读取内容输出
    long written = 0;
    int byteSize = 1024;
    byte[] bytes = new byte[byteSize];
    while (written < resourceSize) {
      if (written + byteSize > resourceSize) {  // 说明剩余未读取大小不足一个1024长度，那就按真实长度处理
        byteSize = (int) (resourceSize - written); // 剩余文件长度
        bytes = new byte[byteSize];
      }
      inputStream.read(bytes);
      outputStream.write(bytes);
      outputStream.flush();
      written += byteSize;
    }

  }
}
